package com.cnfangmao.masterdata.excepiton;


import com.cnfangmao.masterdata.common.response.ResBody;

import org.apache.shiro.authz.UnauthorizedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @description: 全局异常处理   
 * @author:	chenxc   
 * @date:   2020年4月16日 上午12:17:42
 */
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {

    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     * @description: 这里直接用Exception，处理所有类型的异常 
     * @author: chenxc
     * @date: 2020年4月16日 上午12:20:47
     * @param: @param e
     * @param: @return      
     * @return: ResBody      
     * @throws
     */
    @ExceptionHandler(value = Exception.class)
    public ResBody<?> defaultErrorHandler(Exception e) {
        logger.error(e.getMessage() == null ? e.toString() : e.getMessage());

        return ResBody.failure("应用程序异常，请联系管理员");
    }
    
    @ExceptionHandler(value = UnauthorizedException.class)
    public ResBody<?> unauthorizedHandler(Exception e) {
        logger.error(e.getMessage() == null ? e.toString() : e.getMessage());
        return ResBody.failure("没有权限"+e.getMessage());
    }
}
